home *** CD-ROM | disk | FTP | other *** search
- package symantec.itools.multimedia;
-
- import java.awt.Canvas;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Vector;
- import symantec.beans.Beans;
-
- public class Animator extends Canvas implements Runnable {
- protected int delay = 500;
- protected int numLoops = 1;
- protected boolean forever = true;
- protected Vector images = new Vector();
- protected Image currentImage = null;
- protected Thread displayThread;
- protected int maxWidth = 0;
- protected int maxHeight = 0;
- protected boolean clearFrame = false;
- protected boolean previewMode = false;
-
- public void setDelay(int var1) {
- this.delay = var1;
- }
-
- public int getDelay() {
- return this.delay;
- }
-
- public void setNumLoops(int var1) {
- this.numLoops = var1;
- }
-
- public int getNumLoops() {
- return this.numLoops;
- }
-
- public void setRepeatMode(boolean var1) {
- this.forever = var1;
- }
-
- public boolean getRepeatMode() {
- return this.forever;
- }
-
- void imageLoadWait(Image var1) {
- MediaTracker var2 = new MediaTracker(this);
- var2.addImage(var1, 0);
-
- try {
- var2.waitForAll();
- } catch (InterruptedException var4) {
- }
-
- int var3;
- if ((var3 = var1.getWidth(this)) > this.maxWidth) {
- this.maxWidth = var3;
- }
-
- if ((var3 = var1.getHeight(this)) > this.maxHeight) {
- this.maxHeight = var3;
- }
-
- }
-
- public synchronized void addImage(URL var1) {
- Image var2 = ((Component)this).getToolkit().getImage(var1);
- boolean var3 = this.images.size() == 0 || this.previewMode || !Beans.isDesignTime();
- if (var3) {
- this.imageLoadWait(var2);
- }
-
- this.images.addElement(new AnimatorImage(var1, var2, var3));
- }
-
- public synchronized void setImageList(URL[] var1) {
- boolean var2 = this.displayThread != null;
- if (var2) {
- this.stopAnimation();
- this.displayThread = null;
- }
-
- this.currentImage = null;
- this.images = new Vector();
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- this.addImage(var1[var3]);
- }
-
- if (!var2 && !this.previewMode && Beans.isDesignTime()) {
- if (var1.length > 0) {
- this.currentImage = ((AnimatorImage)this.images.elementAt(0)).image;
- }
- } else {
- this.startAnimation();
- }
-
- ((Component)this).repaint();
- }
-
- public synchronized URL[] getImageList() {
- URL[] var1 = new URL[this.images.size()];
- byte var2 = 0;
-
- for(Enumeration var3 = this.images.elements(); var3.hasMoreElements(); var1[var2] = ((AnimatorImage)var3.nextElement()).url) {
- }
-
- return var1;
- }
-
- public void setClearFrame(boolean var1) {
- this.clearFrame = var1;
- }
-
- public boolean getClearFrame() {
- return this.clearFrame;
- }
-
- public void startAnimation() {
- if (this.displayThread == null) {
- this.displayThread = new Thread(this);
- this.displayThread.start();
- }
-
- }
-
- public void stopAnimation() {
- if (this.displayThread != null) {
- this.displayThread.stop();
- this.displayThread = null;
- }
-
- }
-
- public void setPreviewMode(boolean var1) {
- if (Beans.isDesignTime()) {
- this.previewMode = var1;
- if (this.previewMode) {
- this.startAnimation();
- return;
- }
-
- this.stopAnimation();
- }
-
- }
-
- public boolean getPreviewMode() {
- return this.previewMode;
- }
-
- public synchronized void run() {
- for(int var1 = 0; var1 < this.numLoops || this.forever; ++var1) {
- for(int var2 = 0; var2 < this.images.size(); ++var2) {
- synchronized(this){}
-
- try {
- try {
- this.wait((long)this.delay);
- } catch (InterruptedException var8) {
- }
-
- AnimatorImage var5 = (AnimatorImage)this.images.elementAt(var2);
- if (!var5.loaded) {
- this.imageLoadWait(var5.image);
- this.images.setElementAt(new AnimatorImage(var5.url, var5.image, true), var2);
- }
-
- this.currentImage = var5.image;
- } catch (Throwable var9) {
- throw var9;
- }
-
- ((Component)this).repaint();
- }
- }
-
- }
-
- public synchronized void paint(Graphics var1) {
- if (this.currentImage != null) {
- var1.drawImage(this.currentImage, 0, 0, this);
- }
-
- }
-
- public void update(Graphics var1) {
- if (this.clearFrame) {
- super.update(var1);
- } else {
- this.paint(var1);
- }
- }
-
- public Dimension preferredSize() {
- return this.images != null && this.images.size() != 0 ? new Dimension(this.maxWidth, this.maxHeight) : new Dimension(10, 10);
- }
-
- public Dimension minimumSize() {
- return this.preferredSize();
- }
- }
-